﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data;
using System.Collections.ObjectModel;
using System.IO;
using produccion.vistamodelo;
using System.ComponentModel;
using produccion.clases;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para FRMordenprodauto.xaml
    /// </summary>
    public partial class FRMordenprodauto : Window
    {
        ordenprodauto _ordenprodauto;

        public FRMordenprodauto()
        {
            InitializeComponent();
            _ordenprodauto =(ordenprodauto) this.DataContext;
        }

        private void texCod_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (_ordenprodauto != null)
            {
                _ordenprodauto.queryPedido();
            }
        }
        
        string codigo="";
        private void datPed_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (_ordenprodauto.selDetPed != null)
            {
                if (_ordenprodauto.selDetPed.tipo != null)
                {
                    if (_ordenprodauto.selDetPed.tipo.Equals("P") || _ordenprodauto.selDetPed.tipo.Equals("S"))
                    {
                        if (!codigo.Equals(_ordenprodauto.selDetPed.codigo))
                        {
                            _ordenprodauto.queryPedTalla();
                        }
                        FRMprogpro s = new FRMprogpro();
                        s.ShowDialog();
                        codigo = _ordenprodauto.selDetPed.codigo;
                    }
                }
            }
        }

        private void butGua_Click(object sender, RoutedEventArgs e)
        {
            List<ordenprodauto.OrdenesPedido> LisDatosCopiadosListaOriginal = new List<ordenprodauto.OrdenesPedido>();//FJRF - Creamos una variable tipo lista para sacar una copia de los datos con los cuales se esta trabajando

            #region FJRF - ProcesoQueCargaLaListaConLosDatosDeLaCopia
            int numContador = 0;//FJRF - Creamos un contador que contara los datos de la lista y no inicializamos en cero
            List<ordenprodauto.OrdenesPedido> all = (from lis in _ordenprodauto.lisOrdPed select lis).ToList();//FJRF - Consultamos la lista
            foreach (ordenprodauto.OrdenesPedido xx in all)//FJRF -Recorremos los datos
            {
                numContador = numContador + 1;//FJRF - Contamos los datos
            }
            LisDatosCopiadosListaOriginal.Clear();//FJRF - Limpiamos cualquier dato que pueda contener la lista
            #endregion

            LisDatosCopiadosListaOriginal = new List<ordenprodauto.OrdenesPedido>(all);//FJRF - Asignamos los datos cargados de la datos originales

            _ordenprodauto.guardarOrdenes(wPnot);//FJRF - Guardamos los datos

            foreach (ordenprodauto.OrdenesPedido Item in LisDatosCopiadosListaOriginal)//FJRF - Recorremos los datos que se estan trabajando
            {
                String StrNumeroOrden = Item.dOrdenPedido.NROORD_DOP.ToString();//FJRF - Cargamos los datos del pedido
                if (Item.eOrdenPedido.EXISTE == false)//FJRF - Si el dato es un dato nuevo entonces hacemos lo siguiente
                {
                    frmSalMP FrmForularioDeSalidas = new frmSalMP();//FJRF - Creamos un formulario que maneje

                    MDOgeneral.strImprimirNoCopias = "2-FRMordenprodauto(butGua_Click)";//FJRF enviamos el numero de copias y en nombre de donde se procesa la funcion

                    FrmForularioDeSalidas.StrCodigoOrdenAutomatica = StrNumeroOrden;//FJRF - Enviamos el numero de la orden al formulario
                    FrmForularioDeSalidas.dgSalida.Focus();//FJRF - Ponemos el foco en el grid
                    FrmForularioDeSalidas.ShowDialog();//FJRF - Activimos el formulario

                    datPed.SelectedIndex = lostindex;
                    texCodc.Focus();
                    texCodc.Select(0, 0);
                }
            }
            LisDatosCopiadosListaOriginal.Clear();
        }

        private void butSal_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        int lostindex=-1;
        private void datPed_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (datPed.SelectedIndex != -1) 
            {
                lostindex = datPed.SelectedIndex;
            }
        }

        private void buscClie(object sender, RoutedEventArgs e)
        {
            _ordenprodauto.buscarCliente();          
        }

        private void Window_Closed(object sender, EventArgs e)
        {
            ordenprodauto.Instance = null;
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Keyboard.Focus(texCodc);
        }

        private void datPed_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }

        private void datEord_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }

        private void dataGrid1_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }

        private void dataGrid2_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }

        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.F3 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta == true) { MDOgeneral.logBusquedadAbierta = false; }
            }

            if (e.Key == Key.F4 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta1 == true) { MDOgeneral.logBusquedadAbierta1 = false; }
            }

            if (e.Key == Key.F5 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta2 == true) { MDOgeneral.logBusquedadAbierta2 = false; }
            }
        }
      
    }
    

    public class ordenprodauto:ObservableObject
    {
        
        #region singleton

            private static ordenprodauto instance = null;

            //----------------------------------------------------------------------------
            protected ordenprodauto() 
            {
                cargarCortadores();

                MDOgeneral.conectar();
                strTituloVentana = "Ordenes de producción automáticas - Usuario: " + MDOgeneral.usuario + " - [FRMordenprodauto]";
            }

            public void cargarCortadores()
            {
                try
                {
                    List<clases.CLSMAEEMPP> lisEmpleados = new clases.CLSMAEEMPP().listaEmpleados();
                    _buscarEmpleado = new VMbuscarGeneral((from emp in lisEmpleados
                        select new VMlistaGenerica { strColumna1 = emp.CODEMP_EMP, strColumna2 = emp.CEDEMP_EMP, strColumna3 = emp.NOMEMP_EMP }).ToList());
                    buscarEmpleado.PropertyChanged += onBuscarEmpleadoPropertyChanged;
                    buscarEmpleado.gridBuscar.columna1.strNombre = "Código";
                    buscarEmpleado.gridBuscar.columna2.strNombre = "Cedula";
                    buscarEmpleado.gridBuscar.columna3.strNombre = "Nombre";
                    
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            void onBuscarEmpleadoPropertyChanged(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "IsOpen")
                {
                    if (!buscarEmpleado.IsOpen)
                    {
                        if (buscarEmpleado.gridBuscar.selLista != null)
                        {
                            if (numBusqueda == 1)
                                CodCortador1 = buscarEmpleado.gridBuscar.selLista.strColumna1;
                            if (numBusqueda == 2)
                                CodCortador2 = buscarEmpleado.gridBuscar.selLista.strColumna1;
                            if (numBusqueda == 3)
                                CodCortador3 = buscarEmpleado.gridBuscar.selLista.strColumna1;
                        }
                    }
                }
            }

            RelayCommand _cmdBuscarCortador;
            public ICommand cmdBuscarCortador
            {
                get
                {
                    if (_cmdBuscarCortador == null)
                    {
                        _cmdBuscarCortador = new RelayCommand(buscarCortador);
                    }
                    return _cmdBuscarCortador;
                }
            }

            public static ordenprodauto Instance
           {
                get 
                {
                    if (instance == null)
                        instance = new ordenprodauto();
                    return instance;
                }
                set 
                { 
                    if (instance != null)
                        instance = null;
                }
            }

        #endregion

        //-------------------------------------------------------------------------------
        #region propiedades nuevas
            private string _strTituloVentana;
            public string strTituloVentana
            {
                get { return _strTituloVentana; }
                set { _strTituloVentana = value; RaisePropertyChangedEvent("strTituloVentana"); }
            }
        
            private VMbuscarGeneral _buscarEmpleado;
            public VMbuscarGeneral buscarEmpleado
            {
                get { return _buscarEmpleado; }
                set { _buscarEmpleado = value; base.OnPropertyChanged("buscarEmpleado"); }
            }
        #endregion
        
        #region encabezado

            //Informacion del encabezado del pedido codcli,nroped
            clases.CLSENCPPCP _pedido = new clases.CLSENCPPCP();
            public clases.CLSENCPPCP pedido 
            {
                get { return _pedido; }
                set { _pedido = value; RaisePropertyChangedEvent("pedido"); }
            }

            //Informacion del cliente nombre
            clases.CLSMAECLIP _cliente = new clases.CLSMAECLIP();
            public clases.CLSMAECLIP cliente
            {
                get { return _cliente; }
                set { _cliente = value; RaisePropertyChangedEvent("cliente"); }
            }

            //Informacion del subcliente nombre
            clases.CLSMAECLIP _subcliente = new clases.CLSMAECLIP();
            public clases.CLSMAECLIP subcliente
            {
                get { return _subcliente; }
                set { _subcliente = value; RaisePropertyChangedEvent("subcliente"); }
            }

            //Imagen de la referencia
            BitmapImage _imagen;
            public BitmapImage imagen
            {
                get { return _imagen; }
                set { _imagen = value; RaisePropertyChangedEvent("imagen"); }
            }

            private VMvisorFotoReferencia _visorFotoReferencia = new VMvisorFotoReferencia();
            public VMvisorFotoReferencia visorFotoReferencia
            {
                get { return _visorFotoReferencia; }
                set { _visorFotoReferencia = value; RaisePropertyChangedEvent("visorFotoReferencia"); }
            }

            private int numBusqueda;

            public void buscarCortador(object intcontador)
            {
                try
                {
                    numBusqueda = Convert.ToInt32(intcontador);
                    buscarEmpleado.IsOpen = true;
                }
                catch (Exception ex) { throw ex; }
            }

            //Consulta la informacion del encabezado y detalle del pedido
            string camb1;
            int camb2;
            public void queryPedido()
            {
                if (pedido.CODCLI_EPC != camb1 || pedido.NROPED_EPC != camb2)
                {
                    if (pedido.CAMBIO)
                    {
                        if (MessageBox.Show("¿Está seguro que desea cambiar de elemento? se perderán los cambios no guardados.", "Confirmar", MessageBoxButton.OKCancel, MessageBoxImage.Question) == MessageBoxResult.Cancel)
                        {
                            pedido.CODCLI_EPC = camb1;
                            pedido.NROPED_EPC = camb2;
                            return;
                        }
                        pedido.CAMBIO = false;
                    }
                    camb1 = pedido.CODCLI_EPC;
                    camb2 = pedido.NROPED_EPC;
                    pedido.consultar();

                    pedido.consultar();
                    if (pedido.EXISTE)
                    {
                        cliente.CODCLI_CLI = pedido.CODCLI_EPC;
                        cliente.consultar();
                        subcliente.CODCLI_CLI = pedido.SUBCLI_EPC;
                        subcliente.consultar();
                        DetPedido clspedido = new DetPedido();
                        clspedido.pen.NROPED_DPC = pedido.NROPED_EPC;
                        clspedido.pen.CODCLI_DPC = pedido.CODCLI_EPC;
                        lisDetPed = clspedido.consultar();

                    }
                    if (!pedido.EXISTE)
                    {
                        pedido = new clases.CLSENCPPCP { CODCLI_EPC = camb1, NROPED_EPC = camb2 };
                        cliente = new clases.CLSMAECLIP();
                        subcliente = new clases.CLSMAECLIP();
                        lisDetPed.Clear();
                    }
                }
            }

            public void buscarCliente() 
            {
                FRMbuscar f = new FRMbuscar(new clases.CLSMAECLIP(), "buscar", "Nombre_cliente", "NOMCLI_CLI", "Codigo");
                f.ShowDialog();

                if (pedido.CODCLI_EPC == f.retorno) 
                {
                    pedido.CODCLI_EPC = "";
                }
                if (f.retorno != "") 
                {
                    pedido.CODCLI_EPC = f.retorno;
                }
            }

            private VMbuscarPedido _buscarPedido;
            public VMbuscarPedido buscarPedido
            {
                get { return _buscarPedido; }
                set { _buscarPedido = value; RaisePropertyChangedEvent("buscarPedido"); }
            }

            RelayCommand _cmdBuscarPedido;
            public ICommand cmdBuscarPedido
            {
                get
                {
                    if (_cmdBuscarPedido == null)
                    {
                        _cmdBuscarPedido = new RelayCommand(r => BuscarPedido());
                    }
                    return _cmdBuscarPedido;
                }
            }

            public void BuscarPedido() 
            {
                try 
                {
                    buscarPedido = new VMbuscarPedido(new CLSMAECLIP {CODCLI_CLI=pedido.CODCLI_EPC});
                    buscarPedido.PropertyChanged += OnBuscarPedidoPropertyChanged;
                    buscarPedido.IsOpen = true;
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            void OnBuscarPedidoPropertyChanged(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "IsOpen")
                {
                    if (!buscarPedido.IsOpen)
                    {
                        if (buscarPedido.gridBuscar.selLista != null)
                        {
                            if (!String.IsNullOrEmpty(buscarPedido.gridBuscar.selLista.strColumna1))
                            {
                                pedido.NROPED_EPC = Convert.ToInt32(buscarPedido.gridBuscar.selLista.strColumna1);
                            }
                        }
                    }
                }

            }

        #endregion

        #region detalle del pedido

            //lista del detalle del pedido (referenicas pedidas)
            ObservableCollection<DetPedido> _lisDetPed = new ObservableCollection<DetPedido>();
            public  ObservableCollection<DetPedido> lisDetPed 
            {
                get { return _lisDetPed; }
                set { _lisDetPed = value; RaisePropertyChangedEvent("lisDetPed"); }        
            }

            //seleccion del detalle del pedido
            DetPedido _selDetPed = new DetPedido();
            public DetPedido selDetPed
            {
                get { return _selDetPed; }
                set
                {
                    _selDetPed = value;
                    if (_selDetPed != null)
                    {
                        visorFotoReferencia.strCodigo = selDetPed.codigo.Substring(0, 4);
                        queryOrdenes();
                    }
                    RaisePropertyChangedEvent("selDetPed");
                }
            }

            //Calse del detalle del pedido (lista las referencias)
            public class DetPedido : ObservableObject
            {
                public ObservableCollection<DetPedido> consultar()
                {
                    ObservableCollection<DetPedido> lisDetPed = new ObservableCollection<DetPedido>();
                    try
                    {
                        DataTable val = pen.listaRefPedido();

                        foreach (DataRow r in val.Rows)
                        {
                            DetPedido dpedido = new DetPedido();
                            dpedido.codigo = r["codref_dpc"].ToString() + r["codcol_dpc"].ToString();
                            dpedido.codref = r["codref_dpc"].ToString();
                            dpedido.color = r["codcol_dpc"].ToString();
                            dpedido.referencia = r["nomref_dpc"].ToString();
                            dpedido.nomColor = r["nomcol_dpc"].ToString();
                            dpedido.numtotalOrden = Convert.ToInt16(r["total"]);
                            dpedido.pedido = Convert.ToInt32(r["canped_dpc"] == DBNull.Value ? "0" : r["canped_dpc"]);
                            dpedido.programado = Convert.ToInt32(r["canprg_dpc"] == DBNull.Value ? "0" : r["canprg_dpc"]);
                            dpedido.pendiente = dpedido.pedido - dpedido.programado;

                            if (dpedido.pendiente > 0 && dpedido.pendiente < dpedido.pedido)
                            {
                                dpedido.tipo = "P";
                            }
                            if (dpedido.pendiente == dpedido.pedido)
                            {
                                dpedido.tipo = "S";
                            }
                            if (dpedido.pendiente == 0)
                            {
                                dpedido.tipo = "C";
                            }
                            lisDetPed.Add(dpedido);
                        }
                    }
                    catch (Exception ex) { MessageBox.Show(ex.Message); }
                    return lisDetPed;
                }

                clases.CLSDETPPCP _pen = new clases.CLSDETPPCP();
                public clases.CLSDETPPCP pen
                {
                    get { return _pen; }
                    set { _pen = value; RaisePropertyChangedEvent("pen"); }
                }

                string _codigo;
                public string codigo
                {
                    get { return _codigo; }

                    set { _codigo = value; RaisePropertyChangedEvent("codigo"); }
                }

                string _referencia;
                public string referencia
                {
                    get { return _referencia; }
                    set { _referencia = value; RaisePropertyChangedEvent("referencia"); }
                }

                string _nomColor;
                public string nomColor
                {
                    get { return _nomColor; }
                    set { _nomColor = value; RaisePropertyChangedEvent("nomColor"); }
                }

                int _pedido;
                public int pedido
                {
                    get { return _pedido; }
                    set { _pedido = value; RaisePropertyChangedEvent("pedido"); }
                }

                int _programado;
                public int programado
                {
                    get { return _programado; }
                    set { _programado = value; RaisePropertyChangedEvent("programado"); }
                }

                int _pendiente;
                public int pendiente
                {
                    get { return _pendiente; }
                    set { _pendiente = value; RaisePropertyChangedEvent("pendiente"); }
                }
           
                int _hoy;
                public int hoy
                {
                    get { return _hoy; }
                    set { _hoy = value; RaisePropertyChangedEvent("hoy"); }
                }

                string _tipo;
                public string tipo
                {
                    get { return _tipo; }
                    set { _tipo = value; RaisePropertyChangedEvent("tipo"); }
                }

                string _color;
                public string color
                {
                    get { return _color; }
                    set 
                    {
                        _color = value;
                        pen.CODCOL_DPC = _color;
                        RaisePropertyChangedEvent("color");
                    }
                }

                Int16 _numTotalOrden;
                public Int16 numtotalOrden
                {
                    get { return _numTotalOrden; }
                    set
                    {
                        _numTotalOrden = value;
                        RaisePropertyChangedEvent("numtotalOrden");
                    }
                }

                string _codref;
                public string codref
                {
                    get { return _codref; }
                    set
                    {
                        _codref = value;
                        pen.CODREF_DPC = _codref;
                        RaisePropertyChangedEvent("codref");
                    }
                }
            }

        #endregion

        #region encabezado de la orden
     
            //lista del detalle de la orden (ordenes para las referencias)
            ObservableCollection<OrdenesPedido> _lisOrdPed = new ObservableCollection<OrdenesPedido>();
            public ObservableCollection<OrdenesPedido> lisOrdPed 
            {
                get { return _lisOrdPed; }
                set { _lisOrdPed = value; RaisePropertyChangedEvent("lisOrdPed"); }
            }
              
            OrdenesPedido _selOrdPed = new OrdenesPedido();
            public OrdenesPedido selOrdPed
            {
                get { return _selOrdPed; }
                set 
                { 
                    _selOrdPed = value;
                    if (_selOrdPed != null) 
                    {
                        queryDetOrden();
                    }
                    RaisePropertyChangedEvent("selOrdPed");
                }
            }

            RelayCommand _cmdDobleClic;
            public ICommand cmdDobleClic
            {
                get
                {
                    if (_cmdDobleClic == null)
                    {
                        _cmdDobleClic = new RelayCommand(r => dobleClic());
                    }
                    return _cmdDobleClic;
                }
            }

            public void dobleClic()
            {
                try
                {
                    if (selOrdPed != null)
                    {
                        if (selOrdPed.eOrdenPedido.NROORD_EOP != null)
                        {
                            FRMconsordens _co = new FRMconsordens();
                            _co.texOrd.Text = selOrdPed.eOrdenPedido.NROORD_EOP;
                            _co.texPed.Text = "0";
                            _co.texRef.Text = "";
                            _co.comCli.SelectedIndex = -1;
                            _co.comCol.SelectedIndex = -1;
                            _co.comSub.SelectedItem = -1;
                            _co.datePicker1.SelectedDate = Convert.ToDateTime("01/01/" + DateTime.Now.Year.ToString());
                            _co.filtraOrd();
                            _co.ShowDialog();
                        }
                    }
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }
     
            //Consulta los encabezados de las ordenes para un pedido
            public void queryOrdenes()
            {
                OrdenesPedido op = new OrdenesPedido();
                op.eOrdenPedido.NROPED_EOP = pedido.NROPED_EPC;
                op.eOrdenPedido.CODCLI_EOP = pedido.CODCLI_EPC;
                op.eOrdenPedido.CODCOL_EOP = selDetPed.codigo.Substring(4, 2);
                op.eOrdenPedido.CODREF_EOP = selDetPed.codigo.Substring(0, 4);
                lisDetOrd = new DataTable();
                lisOrdPed.Clear();
                lisOrdPed = op.consultar();
            }

            //Carga las nuevas ordenes programadas
            public void cargarOrdenes()
            {
                quitar_ordenes();
                string max = new clases.CLSENCORDP().Consecutivo("P");

                Boolean addnuevas = false;
                foreach (Detalle det in lstDetalle)
                {
                    if (det.Ok == true)
                    {
                        clases.CLSENCORDP encabezado = new CLSENCORDP();
                        encabezado.NROORD_EOP = max;
                        encabezado.FECORD_EOP = DateTime.Today;
                        encabezado.CODCLI_EOP = pedido.CODCLI_EPC;
                        encabezado.NROPED_EOP = pedido.NROPED_EPC;
                        encabezado.CODREF_EOP = selDetPed.codref;
                        encabezado.CODCOL_EOP = selDetPed.color;
                        encabezado.CODHOR_EOP = " ";
                        encabezado.CODCOR1_EOP = det.CodCortador1;
                        encabezado.CODCOR2_EOP = det.CodCortador2;
                        encabezado.CODCOR3_EOP = det.CodCortador3;
                        encabezado.PORCOR1_EOP = det.PorCortador1;
                        encabezado.PORCOR2_EOP = det.PorCortador2;
                        encabezado.PORCOR3_EOP = det.PorCortador3;
                        encabezado.ESTADO_EOP = "P";
                        encabezado.TIPORD_EOP = "P";
                        clases.CLSDETORDP detalle = new CLSDETORDP();
                        detalle.NROORD_DOP = max;
                        detalle.CANPRG_DOP = det.Total;
                        detalle.CANORD_DOP = det.Total;

                        List<clases.CLSDETORDP> lisdetalle = new List<clases.CLSDETORDP>();

                        if (det.numTalla1 > 0)
                        {
                            lisdetalle.Add(new clases.CLSDETORDP
                            {
                                NROORD_DOP = max, CODREF_DOP = selDetPed.codref, CODCOL_DOP = selDetPed.color,
                                CODTAL_DOP = lisPedTalla.Columns[2].ColumnName, CANORD_DOP = det.numTalla1, CANPRG_DOP = det.numTalla1
                            });
                        }
                        if (det.numTalla2 > 0)
                        {
                            lisdetalle.Add(new clases.CLSDETORDP
                            {
                                NROORD_DOP = max, CODREF_DOP = selDetPed.codref, CODCOL_DOP = selDetPed.color,
                                CODTAL_DOP = lisPedTalla.Columns[3].ColumnName, CANORD_DOP = det.numTalla2, CANPRG_DOP = det.numTalla2
                            });
                        }
                        if (det.numTalla3 > 0)
                        {
                            lisdetalle.Add(new clases.CLSDETORDP
                            {
                                NROORD_DOP = max, CODREF_DOP = selDetPed.codref, CODCOL_DOP = selDetPed.color,
                                CODTAL_DOP = lisPedTalla.Columns[4].ColumnName, CANORD_DOP = det.numTalla3, CANPRG_DOP = det.numTalla3
                            });
                        }
                        if (det.numTalla4 > 0)
                        {
                            lisdetalle.Add(new clases.CLSDETORDP
                            {
                                NROORD_DOP = max, CODREF_DOP = selDetPed.codref, CODCOL_DOP = selDetPed.color,
                                CODTAL_DOP = lisPedTalla.Columns[5].ColumnName, CANORD_DOP = det.numTalla4, CANPRG_DOP = det.numTalla4
                            });
                        }
                        if (det.numTalla5 > 0)
                        {
                            lisdetalle.Add(new clases.CLSDETORDP
                            {
                                NROORD_DOP = max, CODREF_DOP = selDetPed.codref, CODCOL_DOP = selDetPed.color,
                                CODTAL_DOP = lisPedTalla.Columns[6].ColumnName, CANORD_DOP = det.numTalla5, CANPRG_DOP = det.numTalla5
                            });
                        }
                        if (det.numTalla6 > 0)
                        {
                            lisdetalle.Add(new clases.CLSDETORDP
                            {
                                NROORD_DOP = max, CODREF_DOP = selDetPed.codref, CODCOL_DOP = selDetPed.color,
                                CODTAL_DOP = lisPedTalla.Columns[7].ColumnName, CANORD_DOP = det.numTalla6, CANPRG_DOP = det.numTalla6
                            });
                        }
                        if (det.numTalla7 > 0)
                        {
                            lisdetalle.Add(new clases.CLSDETORDP
                            {
                                NROORD_DOP = max, CODREF_DOP = selDetPed.codref, CODCOL_DOP = selDetPed.color,
                                CODTAL_DOP = lisPedTalla.Columns[8].ColumnName, CANORD_DOP = det.numTalla7, CANPRG_DOP = det.numTalla7
                            });
                        }
                        if (det.numTalla8 > 0)
                        {
                            lisdetalle.Add(new clases.CLSDETORDP
                            {
                                NROORD_DOP = max, CODREF_DOP = selDetPed.codref, CODCOL_DOP = selDetPed.color,
                                CODTAL_DOP = lisPedTalla.Columns[9].ColumnName, CANORD_DOP = det.numTalla8, CANPRG_DOP = det.numTalla8
                            });
                        }

                        addnuevas = true;
                        lisOrdPed.Add(new OrdenesPedido { eOrdenPedido = encabezado, dOrdenPedido = detalle, lisdOrdenPedido = lisdetalle });
                        double DblValor = double.Parse(max) + 1;
                        max = DblValor.ToString();
                    }
                }
                CAMNORDEN = addnuevas;

                #region Codigo cambiado
                //for (int fila = 1; fila <= lisPedTalla.Rows.Count - 1; fila++)
                //{
                //    if (Convert.ToBoolean(lisPedTalla.Rows[fila]["Ok"]))
                //    {
                //        clases.CLSENCORDP encabezado = new clases.CLSENCORDP();
                //        encabezado.NROORD_EOP = max; encabezado.FECORD_EOP = DateTime.Today;
                //        encabezado.CODCLI_EOP = pedido.CODCLI_EPC; encabezado.NROPED_EOP = pedido.NROPED_EPC;
                //        encabezado.CODREF_EOP = selDetPed.codref; encabezado.CODCOL_EOP = selDetPed.color;
                //        encabezado.CODHOR_EOP = " ";
                //        encabezado.CODCOR1_EOP = lisPedTalla.Rows[fila]["CodCortador1"].ToString();
                //        encabezado.CODCOR2_EOP = lisPedTalla.Rows[fila]["CodCortador2"].ToString();
                //        encabezado.CODCOR3_EOP = lisPedTalla.Rows[fila]["CodCortador3"].ToString();
                //        encabezado.PORCOR1_EOP = Convert.ToDouble(lisPedTalla.Rows[fila]["PorCortador1"].ToString().Equals("") ? "0" : lisPedTalla.Rows[fila]["PorCortador1"]);
                //        encabezado.PORCOR2_EOP = Convert.ToDouble(lisPedTalla.Rows[fila]["PorCortador2"].ToString().Equals("") ? "0" : lisPedTalla.Rows[fila]["PorCortador2"]);
                //        encabezado.PORCOR3_EOP = Convert.ToDouble(lisPedTalla.Rows[fila]["PorCortador3"].ToString().Equals("") ? "0" : lisPedTalla.Rows[fila]["PorCortador3"]);
                //        encabezado.ESTADO_EOP = "P"; encabezado.TIPORD_EOP = "P";
                //        clases.CLSDETORDP detalle = new clases.CLSDETORDP();
                //        detalle.NROORD_DOP = max;
                //        detalle.CANPRG_DOP = Convert.ToInt32(lisPedTalla.Rows[fila]["Total"]);
                //        detalle.CANORD_DOP = Convert.ToInt32(lisPedTalla.Rows[fila]["Total"]);

                //        List<clases.CLSDETORDP> lisdetalle = new List<clases.CLSDETORDP>();
                   
                //        for (int col = 2; col <= lisPedTalla.Columns.Count - 1; col++)
                //        {
                //            if (lisPedTalla.Columns[col].ColumnName.Equals("Total"))
                //            {
                //                break;
                //            }
                //            if (!String.IsNullOrEmpty(lisPedTalla.Rows[fila][col].ToString()))
                //            {
                //                lisdetalle.Add(new clases.CLSDETORDP {
                //                NROORD_DOP = max,
                //                CODREF_DOP=selDetPed.codref,
                //                CODCOL_DOP=selDetPed.color,
                //                CODTAL_DOP = lisPedTalla.Columns[col].ColumnName,
                //                CANORD_DOP = Convert.ToInt32(lisPedTalla.Rows[fila][col]),
                //                CANPRG_DOP = Convert.ToInt32(lisPedTalla.Rows[fila][col])
                //                });
                //            }
                //        }
                //        addnuevas = true;
                //        lisOrdPed.Add(new OrdenesPedido { eOrdenPedido = encabezado, dOrdenPedido = detalle, lisdOrdenPedido = lisdetalle });
                //        max = "P" + (Convert.ToInt32(max.Substring(1, max.Length - 1)) + 1).ToString("00000");
                //    }
                //}
                //CAMNORDEN = addnuevas;
                #endregion
            }

            //Quitar ordenes de cargas anteriores
            public void quitar_ordenes() 
            {
                for (int i = 0; i <= lisOrdPed.Count - 1; i++) 
                {
                    if (!lisOrdPed[i].eOrdenPedido.EXISTE) 
                    {
                        lisOrdPed.RemoveAt(i);
                        i = i - 1;
                    }           
                }       
            }

            private Boolean _CAMNORDEN=false;
            public Boolean CAMNORDEN 
            {
                get { return _CAMNORDEN; }
                set { _CAMNORDEN = value; RaisePropertyChangedEvent("CAMNORDEN"); }
            }

            //Clase para listar el encabezado de las ordenes de produccion
            public class OrdenesPedido : ObservableObject
            {
                public ObservableCollection<OrdenesPedido> consultar()
                {
                    ObservableCollection<OrdenesPedido> lisOrdPed = new ObservableCollection<OrdenesPedido>();
                    try
                    {
                        DataTable val = eOrdenPedido.listaOrdRefPed();
                        foreach (DataRow r in val.Rows)
                        {
                            OrdenesPedido ordenespedido = new OrdenesPedido();
                            ordenespedido.eOrdenPedido.NROORD_EOP = r["NROORD_EOP"].ToString();
                            ordenespedido.dOrdenPedido.NROORD_DOP = r["NROORD_EOP"].ToString();
                            ordenespedido.eOrdenPedido.FECORD_EOP = Convert.ToDateTime(r["FECORD_EOP"]);
                            ordenespedido.dOrdenPedido.CANORD_DOP = Convert.ToInt32(r["CANORD_DOP"]);
                            ordenespedido.dOrdenPedido.CANCOR_DOP = Convert.ToInt32(r["CANCOR_DOP"]);
                            ordenespedido.dOrdenPedido.CANGUA_DOP = Convert.ToInt32(r["CANGUA_DOP"]);
                            ordenespedido.dOrdenPedido.CANMON_DOP = Convert.ToInt32(r["CANMON_DOP"]);
                            ordenespedido.dOrdenPedido.CANDES_DOP = Convert.ToInt32(r["CANDES_DOP"]);
                            ordenespedido.dOrdenPedido.CANPRP_DOP = Convert.ToInt32(r["CANPRP_DOP"]);
                            ordenespedido.dOrdenPedido.CANPRG_DOP = Convert.ToInt32(r["CANPRG_DOP"]);
                            ordenespedido.eOrdenPedido.ESTADO_EOP = r["ESTADO_EOP"].ToString();
                            ordenespedido.eOrdenPedido.EXISTE = true;
                            ordenespedido.dOrdenPedido.EXISTE = true;
                            ordenespedido.eOrdenPedido.CAMBIO = false;
                            ordenespedido.dOrdenPedido.CAMBIO = false;
                            lisOrdPed.Add(ordenespedido);
                        }
                    }
                    catch (Exception ex) { MessageBox.Show(ex.Message); }
                    return lisOrdPed;
                }

                clases.CLSENCORDP _eOrdenPedido = new clases.CLSENCORDP();
                public clases.CLSENCORDP eOrdenPedido
                {
                    get { return _eOrdenPedido; }
                    set { _eOrdenPedido = value; RaisePropertyChangedEvent("eOrdenPedido"); }
                }

                clases.CLSDETORDP _dOrdenPedido = new clases.CLSDETORDP();
                public clases.CLSDETORDP dOrdenPedido
                {
                    get { return _dOrdenPedido; }
                    set { _dOrdenPedido = value; RaisePropertyChangedEvent("dOrdenPedido"); }
                }

                List<clases.CLSDETORDP> _lisdOrdenPedido = new List<clases.CLSDETORDP>();
                public List<clases.CLSDETORDP> lisdOrdenPedido
                {
                    get { return _lisdOrdenPedido; }
                    set { _lisdOrdenPedido = value; RaisePropertyChangedEvent("lisdOrdenPedido"); }

                }
                public string fecha
                {
                    get { return eOrdenPedido.FECORD_EOP.ToShortDateString(); }
                    set { eOrdenPedido.FECORD_EOP = Convert.ToDateTime(fecha); }
                }
            }

            //Guarda las nuevas ordenes o los cambios realizados en estas
            public void guardarOrdenes(WrapPanel wPnot) 
            {
                try 
                {
                    List<clases.CLSENCORDP> encabezados = new List<clases.CLSENCORDP>();
                    List<clases.CLSDETORDP> detalles = new List<clases.CLSDETORDP>();

                    for (int i = 0; i <= lisOrdPed.Count-1; i++) 
                    {
                        if (lisOrdPed[i].eOrdenPedido.EXISTE==false) 
                        {
                            encabezados.Add(lisOrdPed[i].eOrdenPedido);
                            for (int j = 0; j <= lisOrdPed[i].lisdOrdenPedido.Count - 1; j++)
                            {
                                detalles.Add(lisOrdPed[i].lisdOrdenPedido[j]);
                            }
                        }
                    }

                    if (new clases.CLSENCORDP().guardar(encabezados, detalles) > 0)
                    {
                        new MDOgeneral.notificar(wPnot, "Las ordenes fueron guardas correctamente.", true);
                        camb2 = -1;
                        queryPedido();
                        CAMNORDEN = false;
                    }
                    else 
                    {
                        new MDOgeneral.notificar(wPnot, "Las ordenes no pueden ser guardas.", false);
                    }
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }
       
        #endregion

        #region detalle de la orden

            DataTable _lisDetOrd = new DataTable();
            public  DataTable lisDetOrd 
            {
                get { return _lisDetOrd; }
                set { _lisDetOrd = value; RaisePropertyChangedEvent("lisDetOrd"); }
            }

            DataTable _lisCanPro = new DataTable();
            public DataTable lisCanPro 
            {
                get { return _lisCanPro; }
                set { _lisCanPro = value; RaisePropertyChangedEvent("lisCanPro"); }
            }

            //Consulta el detalle de una orden
            public void queryDetOrden()
            {
                lisCanPro = new clases.CLSENCPRCP {NROORD_EPP=selOrdPed.eOrdenPedido.NROORD_EOP}.consCatPro();
                selOrdPed.eOrdenPedido.NROPED_EOP = pedido.NROPED_EPC;
                selOrdPed.eOrdenPedido.CODCLI_EOP = pedido.CODCLI_EPC;
                selOrdPed.eOrdenPedido.CODCOL_EOP = selDetPed.codigo.Substring(4, 2);
                selOrdPed.eOrdenPedido.CODREF_EOP = selDetPed.codigo.Substring(0, 4);
                DataTable val = selOrdPed.eOrdenPedido.lisOrdSeccion();
                DataTable valores = new DataTable();
                valores.Columns.Add("Seccion");
                foreach (DataRow r in val.Rows)
                {

                    if (!String.IsNullOrEmpty(r["CODTAL_PRO"].ToString()))
                    {
                        valores.Columns.Add(r["CODTAL_PRO"].ToString());
                    }
                }

                DataRow s = valores.NewRow();
                s["Seccion"] = "Programado";
                foreach (DataRow r in val.Rows)
                {
                    s[r["CODTAL_PRO"].ToString()] = r["CANPRG_DOP"].ToString();
                }
                valores.Rows.Add(s);

                s = valores.NewRow();
                s["Seccion"] = "Corte";
                foreach (DataRow r in val.Rows)
                {
                    s[r["CODTAL_PRO"].ToString()] = r["CANCOR_DOP"].ToString();
                }
                valores.Rows.Add(s);

                s = valores.NewRow();
                s["Seccion"] = "Guarnecida";
                foreach (DataRow r in val.Rows)
                {
                    s[r["CODTAL_PRO"].ToString()] = r["CANGUA_DOP"].ToString();
                }
                valores.Rows.Add(s);

                s = valores.NewRow();
                s["Seccion"] = "Montaje";
                foreach (DataRow r in val.Rows)
                {
                    s[r["CODTAL_PRO"].ToString()] = r["CANMON_DOP"].ToString();
                }
                valores.Rows.Add(s);

                s = valores.NewRow();
                s["Seccion"] = "Despacho";
                foreach (DataRow r in val.Rows)
                {
                    s[r["CODTAL_PRO"].ToString()] = r["CANDES_DOP"].ToString();
                }
                valores.Rows.Add(s);
                lisDetOrd = valores;
            }

        #endregion
        
        #region programacion de la orden
            
            // Lista de las tallas
            private ObservableCollection<Detalle> _lstDetalle = new ObservableCollection<Detalle>();
            public ObservableCollection<Detalle> lstDetalle
            {
                get { return _lstDetalle; }
                set { _lstDetalle = value; RaisePropertyChangedEvent("lstDetalle"); }
            }

            //Orden seleccionada en el grid de programacion
            private Detalle _sellstDetalle;
            public Detalle sellstDetalle
            {
                get { return _sellstDetalle; }
                set 
                { 
                    _sellstDetalle = value;
                    RaisePropertyChangedEvent("sellstDetalle"); 
                }
            }

            //item seleccionada en el grid de programacion
            private Int32 _numsellstDetalle;
            public Int32 numsellstDetalle
            {
                get { return _numsellstDetalle; }
                set { _numsellstDetalle = value; RaisePropertyChangedEvent("numsellstDetalle"); }
            }

            private Int32 _numTotalTallas;
            public Int32 numTotalTallas
            {
                get { return _numTotalTallas; }
                set { _numTotalTallas = value; RaisePropertyChangedEvent("numTotalTallas"); }
            } 

            //listado de las tallas
            DataTable _lisPedTalla = new DataTable();
            public DataTable lisPedTalla
            {
                get { return _lisPedTalla; }
                set { _lisPedTalla = value; RaisePropertyChangedEvent("lisPedTalla"); }
            }

            //Orden seleccionada en el grid de programacion
            int _selPrgOrd;
            public int selPrgOrd
            {
                get { return _selPrgOrd; }
                set { _selPrgOrd = value; RaisePropertyChangedEvent("selPrgOrd"); }
            } 

            //Error en el grid de programacion de la orden
            Boolean _ERRORPRO = false;
            public Boolean ERRORPRO
            {

                get { return _ERRORPRO; }
                set { _ERRORPRO = value; RaisePropertyChangedEvent("ERRORPRO"); }
            }

            //Validacion para asignacion de ordenes seleccionadas
            Boolean _VALIDOPRO = false;
            public Boolean VALIDOPRO
            {
                get { return _VALIDOPRO; }
                set { _VALIDOPRO = value; RaisePropertyChangedEvent("VALIDOPRO"); }
            }

            Int16 _numTotReg = 0;
            public Int16 numTotReg
            {
                get { return _numTotReg; }
                set { _numTotReg = value; RaisePropertyChangedEvent("numTotReg"); }
            }

            private Boolean _logRecalcula = false;
            public Boolean logRecalcula
            {
                get { return _logRecalcula; }
                set { _logRecalcula = value; RaisePropertyChangedEvent("logRecalcula"); }
            }

            //Genera la programaciond de la orden
            public void queryPedTalla()
            {
                logRecalcula = false;
                ERRORPRO = false;
                VALIDOPRO = false;
                int numCuenta = 0;
                selDetPed.pen.CODCLI_DPC = pedido.CODCLI_EPC;
                selDetPed.pen.NROPED_DPC = pedido.NROPED_EPC;
                DataTable val = selDetPed.pen.listPedTalla();
                DataTable valores = new DataTable();

                //Columnas
                valores.Columns.Add("Orden");
                valores.Columns.Add("Ok", System.Type.GetType("System.Boolean"));

                foreach (DataRow r in val.Rows)
                {
                    valores.Columns.Add(r["CODTAL_PRO"].ToString(), System.Type.GetType("System.Int32"));
                    numCuenta++;
                }
                numTotalTallas = numCuenta;

                valores.Columns.Add("Total");
                valores.Columns.Add("Asignada", System.Type.GetType("System.Boolean"));

                valores.Columns.Add("CodCortador1");
                valores.Columns.Add("CodCortador2");
                valores.Columns.Add("CodCortador3");
                valores.Columns.Add("PorCortador1");
                valores.Columns.Add("PorCortador2");
                valores.Columns.Add("PorCortador3");
                valores.Columns.Add("Cortador1");
                valores.Columns.Add("Cortador2");
                valores.Columns.Add("Cortador3");

                //Fila 1
                DataRow fila = valores.NewRow();
                fila["Orden"] = "Pendiente";
                fila["Ok"] = false;
                fila["Asignada"] = false;
                int sumpen = 0;
                foreach (DataRow r in val.Rows)
                {
                    if (r["CANPEN_DPC"] != DBNull.Value)
                    {
                        if (Convert.ToInt32(r["CANPEN_DPC"]) > 0)
                        {
                            fila[r["CODTAL_PRO"].ToString()] = Convert.ToInt32(r["CANPEN_DPC"]);
                            sumpen = sumpen + Convert.ToInt32(r["CANPEN_DPC"]);
                        }
                    }
                }
                fila["Total"] = sumpen;
                valores.Rows.Add(fila);

                int totord = 0;

                Double aux = (Double)sumpen / selDetPed.numtotalOrden;
                aux = (Double)aux % 1;

                if (aux>0.3)
                {
                    totord = Convert.ToInt32(sumpen / selDetPed.numtotalOrden) + 1;             
                }
                else
                {
                    totord = Convert.ToInt32(sumpen / selDetPed.numtotalOrden) == 0 ? 1 : Convert.ToInt32(sumpen / selDetPed.numtotalOrden);
                }

                numTotReg = Convert.ToInt16(totord);
                numTotReg++;

                DataRow adicionado = valores.NewRow();
                //Adiciona
                for (int i = 0; i < totord; i++)
                {
                    fila = valores.NewRow();
                    int total = 0;
                    foreach (DataRow r in val.Rows)
                    {
                        if (r["CANPEN_DPC"] != DBNull.Value)
                        {
                            if (Convert.ToInt32(r["CANPEN_DPC"]) > 0)
                            {
                                int res = Convert.ToInt32(Convert.ToInt32(r["CANPEN_DPC"]) / totord);
                                fila["Orden"] = i + 1;
                                fila["Ok"] = true;
                                fila[r["CODTAL_PRO"].ToString()] = res;
                                total = total + res;
                                fila["Total"] = total;
                                fila["Asignada"] = false;
                                adicionado[r["CODTAL_PRO"].ToString()] = Convert.ToInt32(adicionado[r["CODTAL_PRO"].ToString()].Equals(DBNull.Value)?"0":adicionado[r["CODTAL_PRO"].ToString()].ToString()) + res;
                            }
                        }
                    }
                    valores.Rows.Add(fila);
                }

                //Compensar
                for(int j=2;j<valores.Columns.Count;j++){

                    if (valores.Columns[j].ColumnName.Equals("Total")) 
                    {
                        break;
                    }

                    if (valores.Rows[0][j] != DBNull.Value)
                    {
                        int nunos = Convert.ToInt32(valores.Rows[0][j]) - Convert.ToInt32(adicionado[j].Equals(DBNull.Value) ? "0" : adicionado[j]);
                        for (int i = 0; i < nunos; i++) 
                        {
                            int filaMenT = consMenorTotal(valores);
                            valores.Rows[filaMenT][j] = Convert.ToInt32(valores.Rows[filaMenT][j]) + 1;
                            valores.Rows[filaMenT]["Total"] = Convert.ToInt32(valores.Rows[filaMenT]["Total"]) + 1;                   
                        }
                    }
                }
                lisPedTalla = valores;
                pasarDTTaLista();
            }
            
            public void copiarCortador()
            {
                if (lstDetalle.Count > 2)
                {
                    string strcodigo1 = "";
                    string strcodigo2 = "";
                    string strcodigo3 = "";

                    string strnombre1 = "";
                    string strnombre2 = "";
                    string strnombre3 = "";

                    double numporcentaje1 = 0;
                    double numporcentaje2 = 0;
                    double numporcentaje3 = 0;

                    int numContador = 0;
                    foreach (Detalle det in lstDetalle)
                    {
                        if (numContador == 1)
                        {
                            strcodigo1 = det.CodCortador1;
                            strcodigo2 = det.CodCortador2;
                            strcodigo3 = det.CodCortador3;

                            strnombre1 = det.Cortador1;
                            strnombre2 = det.Cortador2;
                            strnombre3 = det.Cortador3;

                            numporcentaje1 = det.PorCortador1;
                            numporcentaje2 = det.PorCortador2;
                            numporcentaje3 = det.PorCortador3;
                        }
                        if (numContador > 1)
                        {
                            lstDetalle[numContador].CodCortador1 = strcodigo1;
                            lstDetalle[numContador].CodCortador2 = strcodigo2;
                            lstDetalle[numContador].CodCortador3 = strcodigo3;

                            lstDetalle[numContador].Cortador1 = strnombre1;
                            lstDetalle[numContador].Cortador2 = strnombre2;
                            lstDetalle[numContador].Cortador3 = strnombre3;

                            lstDetalle[numContador].PorCortador1 = numporcentaje1;
                            lstDetalle[numContador].PorCortador2 = numporcentaje2;
                            lstDetalle[numContador].PorCortador3 = numporcentaje3;

                            lstDetalle[numContador].Asignada = true;

                            VALIDOPRO = true;
                        }
                        numContador = numContador + 1;
                    }
                }
            }

            //------------------------------------------------------------------------------------
            //Genera la programaciond de la orden por el boton procesar
            public void queryPedTallaProcesar()
            {
                logRecalcula = true;
                ERRORPRO = false;
                VALIDOPRO = false;
                int numCuenta = 0;
                selDetPed.pen.CODCLI_DPC = pedido.CODCLI_EPC;
                selDetPed.pen.NROPED_DPC = pedido.NROPED_EPC;
                DataTable val = selDetPed.pen.listPedTalla();
                DataTable valores = new DataTable();

                //Columnas
                valores.Columns.Add("Orden");
                valores.Columns.Add("Ok", System.Type.GetType("System.Boolean"));

                foreach (DataRow r in val.Rows)
                {
                    valores.Columns.Add(r["CODTAL_PRO"].ToString(), System.Type.GetType("System.Int32"));
                    numCuenta++;
                }
                numTotalTallas = numCuenta;

                valores.Columns.Add("Total");
                valores.Columns.Add("Asignada", System.Type.GetType("System.Boolean"));

                valores.Columns.Add("CodCortador1");
                valores.Columns.Add("CodCortador2");
                valores.Columns.Add("CodCortador3");
                valores.Columns.Add("PorCortador1");
                valores.Columns.Add("PorCortador2");
                valores.Columns.Add("PorCortador3");
                valores.Columns.Add("Cortador1");
                valores.Columns.Add("Cortador2");
                valores.Columns.Add("Cortador3");

                //Fila 1
                DataRow fila = valores.NewRow();
                fila["Orden"] = "Pendiente";
                fila["Ok"] = false;
                fila["Asignada"] = false;
                int sumpen = 0;
                foreach (DataRow r in val.Rows)
                {
                    if (r["CANPEN_DPC"] != DBNull.Value)
                    {
                        if (Convert.ToInt32(r["CANPEN_DPC"]) > 0)
                        {
                            fila[r["CODTAL_PRO"].ToString()] = Convert.ToInt32(r["CANPEN_DPC"]);
                            sumpen = sumpen + Convert.ToInt32(r["CANPEN_DPC"]);
                        }
                    }
                }
                fila["Total"] = sumpen;
                valores.Rows.Add(fila);

                int totord = 1;
                numTotReg = 2;

                DataRow adicionado = valores.NewRow();
                //Adiciona
                for (int i = 0; i < totord; i++)
                {
                    fila = valores.NewRow();
                    int total = 0;
                    foreach (DataRow r in val.Rows)
                    {
                        if (r["CANPEN_DPC"] != DBNull.Value)
                        {
                            if (Convert.ToInt32(r["CANPEN_DPC"]) > 0)
                            {
                                int res = Convert.ToInt32(Convert.ToInt32(r["CANPEN_DPC"]) / totord);
                                fila["Orden"] = i + 1;
                                fila["Ok"] = true;
                                fila[r["CODTAL_PRO"].ToString()] = res;
                                total = total + res;
                                fila["Total"] = total;
                                fila["Asignada"] = false;
                                adicionado[r["CODTAL_PRO"].ToString()] = Convert.ToInt32(adicionado[r["CODTAL_PRO"].ToString()].Equals(DBNull.Value) ? "0" : adicionado[r["CODTAL_PRO"].ToString()].ToString()) + res;
                            }
                        }
                    }
                    valores.Rows.Add(fila);
                }

                //Compensar
                for (int j = 2; j < valores.Columns.Count; j++)
                {

                    if (valores.Columns[j].ColumnName.Equals("Total"))
                    {
                        break;
                    }

                    if (valores.Rows[0][j] != DBNull.Value)
                    {
                        int nunos = Convert.ToInt32(valores.Rows[0][j]) - Convert.ToInt32(adicionado[j].Equals(DBNull.Value) ? "0" : adicionado[j]);
                        for (int i = 0; i < nunos; i++)
                        {
                            int filaMenT = consMenorTotal(valores);
                            valores.Rows[filaMenT][j] = Convert.ToInt32(valores.Rows[filaMenT][j]) + 1;
                            valores.Rows[filaMenT]["Total"] = Convert.ToInt32(valores.Rows[filaMenT]["Total"]) + 1;
                        }
                    }
                }
                lisPedTalla = valores;
                pasarDTTaLista();
            }
            //------------------------------------------------------------------------------------
        
            public int consMenorTotal(DataTable valores) 
            {
                int val=Convert.ToInt32(valores.Rows[1]["Total"]),fila=1;
                for (int i = 1; i <= valores.Rows.Count - 1; i++) 
                {
                    if (Convert.ToInt32(valores.Rows[i]["Total"]) < val) 
                    {
                        val = Convert.ToInt32(valores.Rows[i]["Total"]);
                        fila = i;              
                    }
                }
                return fila;
            }

            //Actualiza el total de la orden segun los valores ingresados por el usuario
            public void totalizarprog()
            {
                int sum = 0;
                for (int i = 2; i <= lisPedTalla.Columns.Count; i++)
                {
                    if (lisPedTalla.Columns[i].ColumnName.Equals("Total"))
                    {
                        lisPedTalla.Rows[selPrgOrd][i] = sum;
                        break;
                    }
                    if (!String.IsNullOrEmpty(lisPedTalla.Rows[0][i].ToString()))
                    {
                        sum = sum + Convert.ToInt32(lisPedTalla.Rows[selPrgOrd][i]);
                    }
                }
            }

            #region Asignacion de orden

                public Int32 cantidad
                {
                    get { return sellstDetalle.Total; }
                    set { sellstDetalle.Total = value; RaisePropertyChangedEvent("cantidad"); }
                }

                public string CodCortador1
                {
                    get { return sellstDetalle.CodCortador1; }
                    set
                    {
                        sellstDetalle.CodCortador1 = value;
                        clases.CLSMAEEMPP emp = new clases.CLSMAEEMPP { CODEMP_EMP = value };
                        emp.consultar();
                        NomCortador1 = emp.NOMEMP_EMP;
                        if (NomCortador1 != null)
                        {
                            PorCortador1 = 100;
                            Asignada = true;
                        }
                        RaisePropertyChangedEvent("CodCortador1");
                    }
                }

                public string CodCortador2
                {
                    get { return sellstDetalle.CodCortador2; }
                    set
                    {
                        sellstDetalle.CodCortador2 = value;
                        clases.CLSMAEEMPP emp = new clases.CLSMAEEMPP { CODEMP_EMP = value };
                        emp.consultar();
                        NomCortador2 = emp.NOMEMP_EMP;
                        if (NomCortador2 != null)
                        {
                            PorCortador2 = 100;
                            Asignada = true;
                        }
                        RaisePropertyChangedEvent("CodCortador2");
                    }
                }

                public string CodCortador3
                {
                    get { return sellstDetalle.CodCortador3; }
                    set
                    {
                        sellstDetalle.CodCortador3 = value;
                        clases.CLSMAEEMPP emp = new clases.CLSMAEEMPP { CODEMP_EMP = value };
                        emp.consultar();
                        NomCortador3 = emp.NOMEMP_EMP;
                        if (NomCortador3 != null)
                        {
                            PorCortador3 = 100;
                            Asignada = true;
                        }
                        RaisePropertyChangedEvent("CodCortador3");
                    }
                }

                public double PorCortador1
                {
                    get { return sellstDetalle.PorCortador1; }
                    set
                    {
                        sellstDetalle.PorCortador1 = value;
                        validarAsignacion();
                        RaisePropertyChangedEvent("PorCortador1");
                    }
                }

                public double PorCortador2
                {
                    get { return sellstDetalle.PorCortador2; }
                    set
                    {
                        sellstDetalle.PorCortador2 = value;
                        validarAsignacion();
                        RaisePropertyChangedEvent("PorCortador2");
                    }
                }

                public double PorCortador3
                {
                    get { return sellstDetalle.PorCortador3; }
                    set
                    {
                        sellstDetalle.PorCortador3 = value;
                        validarAsignacion();
                        RaisePropertyChangedEvent("PorCortador3");
                    }
                }

                public string NomCortador1
                {
                    get { return sellstDetalle.Cortador1; }
                    set
                    {
                        sellstDetalle.Cortador1= value;
                        validarAsignacion();
                        RaisePropertyChangedEvent("NomCortador1");
                    }
                }

                public string NomCortador2
                {
                    get { return sellstDetalle.Cortador2; }
                    set
                    {
                        sellstDetalle.Cortador2 = value;
                        validarAsignacion();
                        RaisePropertyChangedEvent("NomCortador2");
                    }
                }

                public string NomCortador3
                {
                    get { return sellstDetalle.Cortador3; }
                    set
                    {
                        sellstDetalle.Cortador3 = value;
                        validarAsignacion();
                        RaisePropertyChangedEvent("NomCortador3");
                    }
                }

                public Boolean Asignada
                {
                    get { return sellstDetalle.Asignada; }
                    set
                    {
                        sellstDetalle.Asignada = value;
                        validarTodoAsig();
                        RaisePropertyChangedEvent("Asignada");
                    }
                }

                public Boolean Ok
                {
                    get { return sellstDetalle.Ok; }
                    set
                    {
                        sellstDetalle.Ok = value;
                        validarTodoAsig();
                        RaisePropertyChangedEvent("Ok");
                    }
                }
       
                //Valida la informacion del cortador y el porcentaje asignado
                public void validarAsignacion()
                {
                    if ((PorCortador1 + PorCortador2 + PorCortador3) != 100)
                    {
                        Asignada = false;
                        return;
                    }
                    if ((String.IsNullOrEmpty(NomCortador1) && PorCortador1 > 0) || (String.IsNullOrEmpty(NomCortador2) && PorCortador2 > 0) || (String.IsNullOrEmpty(NomCortador3) && PorCortador3 > 0))
                    {
                        Asignada = false;
                        return;
                    }

                    Asignada = true;
                }
        
                public void buscarCort1()
                {
                    FRMbuscar f = new FRMbuscar(new clases.CLSMAEEMPP(), "buscar", "Nombre", "NOMEMP_EMP", "Codigo", CodCortador1);
                    f.ShowDialog();           
                    if (f.retorno != "")
                    {
                        CodCortador1 = f.retorno;
                    }
                }

                public void buscarCort2()
                {
                    FRMbuscar f = new FRMbuscar(new clases.CLSMAEEMPP(), "buscar", "Nombre", "NOMEMP_EMP", "Codigo", CodCortador2);
                    f.ShowDialog();
                    if (f.retorno != "")
                    {
                        CodCortador2 = f.retorno;
                    }
                }

                public void buscarCort3()
                {
                    FRMbuscar f = new FRMbuscar(new clases.CLSMAEEMPP(), "buscar", "Nombre", "NOMEMP_EMP", "Codigo", CodCortador3);
                    f.ShowDialog();
                    if (f.retorno != "")
                    {
                        CodCortador3 = f.retorno;
                    }
                }

            #endregion

            //Valida que todas las ordenes seleccionadas esten asignadas
            public void validarTodoAsig()
            {
                VALIDOPRO = true;
                var numTotSinAsignar = ((from ld in lstDetalle where ld.Ok.Equals(true) && ld.Asignada.Equals(false) select ld.Ok).ToList().Count());
                if (numTotSinAsignar>0)
                    VALIDOPRO = false;

                var numSinOk = ((from ld in lstDetalle where ld.Ok.Equals(false) && ld.Asignada.Equals(true) select ld.Ok).ToList().Count());
                if (numSinOk > 0)
                    VALIDOPRO = false;

                var numtot1 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla1);
                var numtot11 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla1);
                if (numtot1 < numtot11)
                    VALIDOPRO = false;

                var numtot2 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla2);
                var numtot21 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla2);
                if (numtot2 < numtot21)
                    VALIDOPRO = false;

                var numtot3 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla3);
                var numtot31 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla3);
                if (numtot3 < numtot31)
                    VALIDOPRO = false;

                var numtot4 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla4);
                var numtot41 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla4);
                if (numtot4 < numtot41)
                    VALIDOPRO = false;

                var numtot5 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla5);
                var numtot51 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla5);
                if (numtot5 < numtot51)
                    VALIDOPRO = false;

                var numtot6 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla6);
                var numtot61 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla6);
                if (numtot6 < numtot61)
                    VALIDOPRO = false;

                var numtot7 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla7);
                var numtot71 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla7);
                if (numtot7 < numtot71)
                    VALIDOPRO = false;

                var numtot8 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla8);
                var numtot81 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla8);
                if (numtot8 < numtot81)
                    VALIDOPRO = false;

                var numtot9 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla9);
                var numtot91 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla9);
                if (numtot9 < numtot91)
                    VALIDOPRO = false;

                var numtot10 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla10);
                var numtot101 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla10);
                if (numtot10 < numtot101)
                    VALIDOPRO = false;

                var numtot111 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla11);
                var numtot1111 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla11);
                if (numtot111 < numtot1111)
                    VALIDOPRO = false;

                var numtot12 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla12);
                var numtot121 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla12);
                if (numtot12 < numtot121)
                    VALIDOPRO = false;

                var numtot13 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla13);
                var numtot131 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla13);
                if (numtot13 < numtot131)
                    VALIDOPRO = false;

                var numtot14 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla14);
                var numtot141 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla14);
                if (numtot14 < numtot141)
                    VALIDOPRO = false;

                var numtot15 = lstDetalle.Where(x => x.Orden.Equals("Pendiente")).Sum(y => y.numTalla15);
                var numtot151 = lstDetalle.Where(x => x.Ok.Equals(true)).Sum(y => y.numTalla15);
                if (numtot15 < numtot151)
                    VALIDOPRO = false;

            }

            public void Recalcular()
            {
                try
                {
                    int i = 0;
                    Int32 numTot = 0, numTot2 = 0, numTotales = 0;
                    Int32 numTTal1 = 0, numTTal2 = 0, numTTal3 = 0, numTTal4 = 0, numTTal5 = 0, numTTal6 = 0, numTTal7 = 0, numTTal8 = 0, numTTal9 = 0, numTTal10 = 0, numTTal11 = 0, numTTal12 = 0, numTTal13 = 0, numTTal14 = 0, numTTal15=0;
                    if (logRecalcula == true)
                    {

                        Detalle objDet = new Detalle();
                        var numContador = ((from ld in lstDetalle where ld.Ok.Equals(true) select ld.Ok).ToList().Count());

                        if (numContador > numsellstDetalle)
                            lstDetalle.RemoveAt(numsellstDetalle + 1);

                        numTot = lstDetalle.Where(w => w.Ok.Equals(false)).Sum(x => x.Total);
                        numTot2 = lstDetalle.Where(w => w.Ok.Equals(true)).Sum(x => x.Total);

                        for (i=1; i<=numsellstDetalle; i++)
                        {
                            numTTal1 = numTTal1 + lstDetalle[i].numTalla1;
                            numTTal2 = numTTal2 + lstDetalle[i].numTalla2;
                            numTTal3 = numTTal3 + lstDetalle[i].numTalla3;
                            numTTal4 = numTTal4 + lstDetalle[i].numTalla4;
                            numTTal5 = numTTal5 + lstDetalle[i].numTalla5;
                            numTTal6 = numTTal6 + lstDetalle[i].numTalla6;
                            numTTal7 = numTTal7 + lstDetalle[i].numTalla7;
                            numTTal8 = numTTal8 + lstDetalle[i].numTalla8;
                            numTTal9 = numTTal9 + lstDetalle[i].numTalla9;
                            numTTal10 = numTTal10 + lstDetalle[i].numTalla10;
                            numTTal11 = numTTal11 + lstDetalle[i].numTalla11;
                            numTTal12 = numTTal12 + lstDetalle[i].numTalla12;
                            numTTal13 = numTTal13 + lstDetalle[i].numTalla13;
                            numTTal14 = numTTal14 + lstDetalle[i].numTalla14;
                            numTTal15 = numTTal15 + lstDetalle[i].numTalla15;
                            numTotales = numTotales + lstDetalle[i].Total;
                        }

                        if (Convert.ToInt16(numTot) > Convert.ToInt16(numTot2))
                        {
                            objDet.numTalla1 = Convert.ToInt16(lstDetalle[0].numTalla1 - numTTal1) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla1 - numTTal1);
                            objDet.numTalla2 = Convert.ToInt16(lstDetalle[0].numTalla2 - numTTal2) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla2 - numTTal2);
                            objDet.numTalla3 = Convert.ToInt16(lstDetalle[0].numTalla3 - numTTal3) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla3 - numTTal3);
                            objDet.numTalla4 = Convert.ToInt16(lstDetalle[0].numTalla4 - numTTal4) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla4 - numTTal4);
                            objDet.numTalla5 = Convert.ToInt16(lstDetalle[0].numTalla5 - numTTal5) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla5 - numTTal5);
                            objDet.numTalla6 = Convert.ToInt16(lstDetalle[0].numTalla6 - numTTal6) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla6 - numTTal6);
                            objDet.numTalla7 = Convert.ToInt16(lstDetalle[0].numTalla7 - numTTal7) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla7 - numTTal7);
                            objDet.numTalla8 = Convert.ToInt16(lstDetalle[0].numTalla8 - numTTal8) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla8 - numTTal8);
                            objDet.numTalla9 = Convert.ToInt16(lstDetalle[0].numTalla9 - numTTal9) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla9 - numTTal9);
                            objDet.numTalla10 = Convert.ToInt16(lstDetalle[0].numTalla10 - numTTal10) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla10 - numTTal10);
                            objDet.numTalla11 = Convert.ToInt16(lstDetalle[0].numTalla11 - numTTal11) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla11 - numTTal11);
                            objDet.numTalla12 = Convert.ToInt16(lstDetalle[0].numTalla12 - numTTal12) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla12 - numTTal12);
                            objDet.numTalla13 = Convert.ToInt16(lstDetalle[0].numTalla13 - numTTal13) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla13 - numTTal13);
                            objDet.numTalla14 = Convert.ToInt16(lstDetalle[0].numTalla14 - numTTal14) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla14 - numTTal14);
                            objDet.numTalla15 = Convert.ToInt16(lstDetalle[0].numTalla15 - numTTal15) < 0 ? Convert.ToInt16(0) : Convert.ToInt16(lstDetalle[0].numTalla15 - numTTal15);
                            objDet.Total = (lstDetalle[0].Total - numTotales);
                            objDet.Orden = Convert.ToString(numsellstDetalle+1).Trim();
                            objDet.Ok = true;
                            lstDetalle.Add(objDet);
                        }
                    }
                    validarTodoAsig();
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            public void pasarDTTaLista()
            {
                try
                {
                    //int j=0;
                    lstDetalle.Clear();
                    foreach (DataRow dr in lisPedTalla.Rows)
                    {
                        Detalle objDetalle = new Detalle();
                        objDetalle.Orden = dr["Orden"].ToString();
                        objDetalle.Ok = Convert.ToBoolean(dr["Ok"]);

                        switch (numTotalTallas)
                        {
                            case 1:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                objDetalle.numTalla2 = 0;
                                objDetalle.numTalla3 = 0;
                                objDetalle.numTalla4 = 0;
                                objDetalle.numTalla5 = 0;
                                objDetalle.numTalla6 = 0;
                                objDetalle.numTalla7 = 0;
                                objDetalle.numTalla8 = 0;
                                objDetalle.numTalla9 = 0;
                                objDetalle.numTalla10 = 0;
                                objDetalle.numTalla11 = 0;
                                objDetalle.numTalla12 = 0;
                                objDetalle.numTalla13 = 0;
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[5].ToString();
                                if (dr[6] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[6].ToString();
                                if (dr[7] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[7].ToString();
                                if (dr[8] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[8]);
                                if (dr[9] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[9]);
                                if (dr[10] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[10]);
                                if (dr[11] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[11].ToString();
                                if (dr[12] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[12].ToString();
                                if (dr[13] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[13].ToString();
                                break;
                            case 2:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                objDetalle.numTalla3 = 0;
                                objDetalle.numTalla4 = 0;
                                objDetalle.numTalla5 = 0;
                                objDetalle.numTalla6 = 0;
                                objDetalle.numTalla7 = 0;
                                objDetalle.numTalla8 = 0;
                                objDetalle.numTalla9 = 0;
                                objDetalle.numTalla10 = 0;
                                objDetalle.numTalla11 = 0;
                                objDetalle.numTalla12 = 0;
                                objDetalle.numTalla13 = 0;
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[6] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[6].ToString();
                                if (dr[7] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[7].ToString();
                                if (dr[8] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[8].ToString();
                                if (dr[9] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[9]);
                                if (dr[10] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[10]);
                                if (dr[11] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[11]);
                                if (dr[12] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[12].ToString();
                                if (dr[13] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[13].ToString();
                                if (dr[14] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[14].ToString();
                                break;
                            case 3:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                objDetalle.numTalla4 = 0;
                                objDetalle.numTalla5 = 0;
                                objDetalle.numTalla6 = 0;
                                objDetalle.numTalla7 = 0;
                                objDetalle.numTalla8 = 0;
                                objDetalle.numTalla9 = 0;
                                objDetalle.numTalla10 = 0;
                                objDetalle.numTalla11 = 0;
                                objDetalle.numTalla12 = 0;
                                objDetalle.numTalla13 = 0;
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[7] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[7].ToString();
                                if (dr[8] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[8].ToString();
                                if (dr[9] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[9].ToString();
                                if (dr[10] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[10]);
                                if (dr[11] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[11]);
                                if (dr[12] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[12]);
                                if (dr[13] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[13].ToString();
                                if (dr[14] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[14].ToString();
                                if (dr[15] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[15].ToString();
                                break;
                            case 4:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.numTalla4 = Convert.ToInt16(dr[5]);
                                else
                                    objDetalle.numTalla4 = Convert.ToInt16(0);
                                objDetalle.numTalla5 = 0;
                                objDetalle.numTalla6 = 0;
                                objDetalle.numTalla7 = 0;
                                objDetalle.numTalla8 = 0;
                                objDetalle.numTalla9 = 0;
                                objDetalle.numTalla10 = 0;
                                objDetalle.numTalla11 = 0;
                                objDetalle.numTalla12 = 0;
                                objDetalle.numTalla13 = 0;
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[8] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[8].ToString();
                                if (dr[9] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[9].ToString();
                                if (dr[10] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[10].ToString();
                                if (dr[11] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[11]);
                                if (dr[12] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[12]);
                                if (dr[13] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[13]);
                                if (dr[14] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[14].ToString();
                                if (dr[15] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[15].ToString();
                                if (dr[16] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[16].ToString();
                                break;
                            case 5:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.numTalla4 = Convert.ToInt16(dr[5]);
                                else
                                    objDetalle.numTalla4 = Convert.ToInt16(0);
                                if (dr[6] != DBNull.Value)
                                    objDetalle.numTalla5 = Convert.ToInt16(dr[6]);
                                else
                                    objDetalle.numTalla5 = Convert.ToInt16(0);
                                objDetalle.numTalla6 = 0;
                                objDetalle.numTalla7 = 0;
                                objDetalle.numTalla8 = 0;
                                objDetalle.numTalla9 = 0;
                                objDetalle.numTalla10 = 0;
                                objDetalle.numTalla11 = 0;
                                objDetalle.numTalla12 = 0;
                                objDetalle.numTalla13 = 0;
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[9] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[9].ToString();
                                if (dr[10] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[10].ToString();
                                if (dr[11] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[11].ToString();
                                if (dr[12] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[12]);
                                if (dr[13] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[13]);
                                if (dr[14] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[14]);
                                if (dr[15] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[15].ToString();
                                if (dr[16] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[16].ToString();
                                if (dr[17] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[17].ToString();
                                break;
                            case 6:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.numTalla4 = Convert.ToInt16(dr[5]);
                                else
                                    objDetalle.numTalla4 = Convert.ToInt16(0);
                                if (dr[6] != DBNull.Value)
                                    objDetalle.numTalla5 = Convert.ToInt16(dr[6]);
                                else
                                    objDetalle.numTalla5 = Convert.ToInt16(0);
                                if (dr[7] != DBNull.Value)
                                    objDetalle.numTalla6 = Convert.ToInt16(dr[7]);
                                else
                                    objDetalle.numTalla6 = Convert.ToInt16(0);
                                objDetalle.numTalla7 = 0;
                                objDetalle.numTalla8 = 0;
                                objDetalle.numTalla9 = 0;
                                objDetalle.numTalla10 = 0;
                                objDetalle.numTalla11 = 0;
                                objDetalle.numTalla12 = 0;
                                objDetalle.numTalla13 = 0;
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[10] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[10].ToString();
                                if (dr[11] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[11].ToString();
                                if (dr[12] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[12].ToString();
                                if (dr[13] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[13]);
                                if (dr[14] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[14]);
                                if (dr[15] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[15]);
                                if (dr[16] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[16].ToString();
                                if (dr[17] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[17].ToString();
                                if (dr[18] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[18].ToString();
                                break;
                            case 7:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.numTalla4 = Convert.ToInt16(dr[5]);
                                else
                                    objDetalle.numTalla4 = Convert.ToInt16(0);
                                if (dr[6] != DBNull.Value)
                                    objDetalle.numTalla5 = Convert.ToInt16(dr[6]);
                                else
                                    objDetalle.numTalla5 = Convert.ToInt16(0);
                                if (dr[7] != DBNull.Value)
                                    objDetalle.numTalla6 = Convert.ToInt16(dr[7]);
                                else
                                    objDetalle.numTalla6 = Convert.ToInt16(0);
                                if (dr[8] != DBNull.Value)
                                    objDetalle.numTalla7 = Convert.ToInt16(dr[8]);
                                else
                                    objDetalle.numTalla7 = Convert.ToInt16(0);
                                objDetalle.numTalla8 = 0;
                                objDetalle.numTalla9 = 0;
                                objDetalle.numTalla10 = 0;
                                objDetalle.numTalla11 = 0;
                                objDetalle.numTalla12 = 0;
                                objDetalle.numTalla13 = 0;
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[11] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[11].ToString();
                                if (dr[12] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[12].ToString();
                                if (dr[13] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[13].ToString();
                                if (dr[14] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[14]);
                                if (dr[15] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[15]);
                                if (dr[16] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[16]);
                                if (dr[17] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[17].ToString();
                                if (dr[18] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[18].ToString();
                                if (dr[19] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[19].ToString();
                                break;
                            case 8:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.numTalla4 = Convert.ToInt16(dr[5]);
                                else
                                    objDetalle.numTalla4 = Convert.ToInt16(0);
                                if (dr[6] != DBNull.Value)
                                    objDetalle.numTalla5 = Convert.ToInt16(dr[6]);
                                else
                                    objDetalle.numTalla5 = Convert.ToInt16(0);
                                if (dr[7] != DBNull.Value)
                                    objDetalle.numTalla6 = Convert.ToInt16(dr[7]);
                                else
                                    objDetalle.numTalla6 = Convert.ToInt16(0);
                                if (dr[8] != DBNull.Value)
                                    objDetalle.numTalla7 = Convert.ToInt16(dr[8]);
                                else
                                    objDetalle.numTalla7 = Convert.ToInt16(0);
                                if (dr[9] != DBNull.Value)
                                    objDetalle.numTalla8 = Convert.ToInt16(dr[9]);
                                else
                                    objDetalle.numTalla8 = Convert.ToInt16(0);
                                objDetalle.numTalla9 = 0;
                                objDetalle.numTalla10 = 0;
                                objDetalle.numTalla11 = 0;
                                objDetalle.numTalla12 = 0;
                                objDetalle.numTalla13 = 0;
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[12] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[12].ToString();
                                if (dr[13] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[13].ToString();
                                if (dr[14] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[14].ToString();
                                if (dr[15] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[15]);
                                if (dr[16] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[16]);
                                if (dr[17] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[17]);
                                if (dr[18] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[18].ToString();
                                if (dr[19] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[19].ToString();
                                if (dr[20] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[20].ToString();
                                break;
                            case 9:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.numTalla4 = Convert.ToInt16(dr[5]);
                                else
                                    objDetalle.numTalla4 = Convert.ToInt16(0);
                                if (dr[6] != DBNull.Value)
                                    objDetalle.numTalla5 = Convert.ToInt16(dr[6]);
                                else
                                    objDetalle.numTalla5 = Convert.ToInt16(0);
                                if (dr[7] != DBNull.Value)
                                    objDetalle.numTalla6 = Convert.ToInt16(dr[7]);
                                else
                                    objDetalle.numTalla6 = Convert.ToInt16(0);
                                if (dr[8] != DBNull.Value)
                                    objDetalle.numTalla7 = Convert.ToInt16(dr[8]);
                                else
                                    objDetalle.numTalla7 = Convert.ToInt16(0);
                                if (dr[9] != DBNull.Value)
                                    objDetalle.numTalla8 = Convert.ToInt16(dr[9]);
                                else
                                    objDetalle.numTalla8 = Convert.ToInt16(0);
                                if (dr[10] != DBNull.Value)
                                    objDetalle.numTalla9 = Convert.ToInt16(dr[10]);
                                else
                                    objDetalle.numTalla9 = Convert.ToInt16(0);
                                objDetalle.numTalla10 = 0;
                                objDetalle.numTalla11 = 0;
                                objDetalle.numTalla12 = 0;
                                objDetalle.numTalla13 = 0;
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[13] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[13].ToString();
                                if (dr[14] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[14].ToString();
                                if (dr[15] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[15].ToString();
                                if (dr[16] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[16]);
                                if (dr[17] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[17]);
                                if (dr[18] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[18]);
                                if (dr[19] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[19].ToString();
                                if (dr[20] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[20].ToString();
                                if (dr[21] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[21].ToString();
                                break;
                            case 10:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.numTalla4 = Convert.ToInt16(dr[5]);
                                else
                                    objDetalle.numTalla4 = Convert.ToInt16(0);
                                if (dr[6] != DBNull.Value)
                                    objDetalle.numTalla5 = Convert.ToInt16(dr[6]);
                                else
                                    objDetalle.numTalla5 = Convert.ToInt16(0);
                                if (dr[7] != DBNull.Value)
                                    objDetalle.numTalla6 = Convert.ToInt16(dr[7]);
                                else
                                    objDetalle.numTalla6 = Convert.ToInt16(0);
                                if (dr[8] != DBNull.Value)
                                    objDetalle.numTalla7 = Convert.ToInt16(dr[8]);
                                else
                                    objDetalle.numTalla7 = Convert.ToInt16(0);
                                if (dr[9] != DBNull.Value)
                                    objDetalle.numTalla8 = Convert.ToInt16(dr[9]);
                                else
                                    objDetalle.numTalla8 = Convert.ToInt16(0);
                                if (dr[10] != DBNull.Value)
                                    objDetalle.numTalla9 = Convert.ToInt16(dr[10]);
                                else
                                    objDetalle.numTalla9 = Convert.ToInt16(0);
                                if (dr[11] != DBNull.Value)
                                    objDetalle.numTalla10 = Convert.ToInt16(dr[11]);
                                else
                                    objDetalle.numTalla10 = Convert.ToInt16(0);
                                objDetalle.numTalla11 = 0;
                                objDetalle.numTalla12 = 0;
                                objDetalle.numTalla13 = 0;
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[14] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[14].ToString();
                                if (dr[15] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[15].ToString();
                                if (dr[16] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[16].ToString();
                                if (dr[17] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[17]);
                                if (dr[18] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[18]);
                                if (dr[19] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[19]);
                                if (dr[20] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[20].ToString();
                                if (dr[21] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[21].ToString();
                                if (dr[22] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[22].ToString();
                                break;
                            case 11:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.numTalla4 = Convert.ToInt16(dr[5]);
                                else
                                    objDetalle.numTalla4 = Convert.ToInt16(0);
                                if (dr[6] != DBNull.Value)
                                    objDetalle.numTalla5 = Convert.ToInt16(dr[6]);
                                else
                                    objDetalle.numTalla5 = Convert.ToInt16(0);
                                if (dr[7] != DBNull.Value)
                                    objDetalle.numTalla6 = Convert.ToInt16(dr[7]);
                                else
                                    objDetalle.numTalla6 = Convert.ToInt16(0);
                                if (dr[8] != DBNull.Value)
                                    objDetalle.numTalla7 = Convert.ToInt16(dr[8]);
                                else
                                    objDetalle.numTalla7 = Convert.ToInt16(0);
                                if (dr[9] != DBNull.Value)
                                    objDetalle.numTalla8 = Convert.ToInt16(dr[9]);
                                else
                                    objDetalle.numTalla8 = Convert.ToInt16(0);
                                if (dr[10] != DBNull.Value)
                                    objDetalle.numTalla9 = Convert.ToInt16(dr[10]);
                                else
                                    objDetalle.numTalla9 = Convert.ToInt16(0);
                                if (dr[11] != DBNull.Value)
                                    objDetalle.numTalla10 = Convert.ToInt16(dr[11]);
                                else
                                    objDetalle.numTalla10 = Convert.ToInt16(0);
                                if (dr[12] != DBNull.Value)
                                    objDetalle.numTalla11 = Convert.ToInt16(dr[12]);
                                else
                                    objDetalle.numTalla11 = Convert.ToInt16(0);
                                objDetalle.numTalla12 = 0;
                                objDetalle.numTalla13 = 0;
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[15] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[15].ToString();
                                if (dr[16] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[16].ToString();
                                if (dr[17] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[17].ToString();
                                if (dr[18] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[18]);
                                if (dr[19] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[19]);
                                if (dr[20] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[20]);
                                if (dr[21] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[21].ToString();
                                if (dr[22] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[22].ToString();
                                if (dr[23] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[23].ToString();
                                break;
                            case 12:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.numTalla4 = Convert.ToInt16(dr[5]);
                                else
                                    objDetalle.numTalla4 = Convert.ToInt16(0);
                                if (dr[6] != DBNull.Value)
                                    objDetalle.numTalla5 = Convert.ToInt16(dr[6]);
                                else
                                    objDetalle.numTalla5 = Convert.ToInt16(0);
                                if (dr[7] != DBNull.Value)
                                    objDetalle.numTalla6 = Convert.ToInt16(dr[7]);
                                else
                                    objDetalle.numTalla6 = Convert.ToInt16(0);
                                if (dr[8] != DBNull.Value)
                                    objDetalle.numTalla7 = Convert.ToInt16(dr[8]);
                                else
                                    objDetalle.numTalla7 = Convert.ToInt16(0);
                                if (dr[9] != DBNull.Value)
                                    objDetalle.numTalla8 = Convert.ToInt16(dr[9]);
                                else
                                    objDetalle.numTalla8 = Convert.ToInt16(0);
                                if (dr[10] != DBNull.Value)
                                    objDetalle.numTalla9 = Convert.ToInt16(dr[10]);
                                else
                                    objDetalle.numTalla9 = Convert.ToInt16(0);
                                if (dr[11] != DBNull.Value)
                                    objDetalle.numTalla10 = Convert.ToInt16(dr[11]);
                                else
                                    objDetalle.numTalla10 = Convert.ToInt16(0);
                                if (dr[12] != DBNull.Value)
                                    objDetalle.numTalla11 = Convert.ToInt16(dr[12]);
                                else
                                    objDetalle.numTalla11 = Convert.ToInt16(0);
                                if (dr[13] != DBNull.Value)
                                    objDetalle.numTalla12 = Convert.ToInt16(dr[13]);
                                else
                                    objDetalle.numTalla12 = Convert.ToInt16(0);
                                objDetalle.numTalla13 = 0;
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[16] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[16].ToString();
                                if (dr[17] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[17].ToString();
                                if (dr[18] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[18].ToString();
                                if (dr[19] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[19]);
                                if (dr[20] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[20]);
                                if (dr[21] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[21]);
                                if (dr[22] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[22].ToString();
                                if (dr[23] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[23].ToString();
                                if (dr[24] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[24].ToString();
                                break;
                            case 13:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.numTalla4 = Convert.ToInt16(dr[5]);
                                else
                                    objDetalle.numTalla4 = Convert.ToInt16(0);
                                if (dr[6] != DBNull.Value)
                                    objDetalle.numTalla5 = Convert.ToInt16(dr[6]);
                                else
                                    objDetalle.numTalla5 = Convert.ToInt16(0);
                                if (dr[7] != DBNull.Value)
                                    objDetalle.numTalla6 = Convert.ToInt16(dr[7]);
                                else
                                    objDetalle.numTalla6 = Convert.ToInt16(0);
                                if (dr[8] != DBNull.Value)
                                    objDetalle.numTalla7 = Convert.ToInt16(dr[8]);
                                else
                                    objDetalle.numTalla7 = Convert.ToInt16(0);
                                if (dr[9] != DBNull.Value)
                                    objDetalle.numTalla8 = Convert.ToInt16(dr[9]);
                                else
                                    objDetalle.numTalla8 = Convert.ToInt16(0);
                                if (dr[10] != DBNull.Value)
                                    objDetalle.numTalla9 = Convert.ToInt16(dr[10]);
                                else
                                    objDetalle.numTalla9 = Convert.ToInt16(0);
                                if (dr[11] != DBNull.Value)
                                    objDetalle.numTalla10 = Convert.ToInt16(dr[11]);
                                else
                                    objDetalle.numTalla10 = Convert.ToInt16(0);
                                if (dr[12] != DBNull.Value)
                                    objDetalle.numTalla11 = Convert.ToInt16(dr[12]);
                                else
                                    objDetalle.numTalla11 = Convert.ToInt16(0);
                                if (dr[13] != DBNull.Value)
                                    objDetalle.numTalla12 = Convert.ToInt16(dr[13]);
                                else
                                    objDetalle.numTalla12 = Convert.ToInt16(0);
                                if (dr[14] != DBNull.Value)
                                    objDetalle.numTalla13 = Convert.ToInt16(dr[14]);
                                else
                                    objDetalle.numTalla13 = Convert.ToInt16(0);
                                objDetalle.numTalla14 = 0;
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[17] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[17].ToString();
                                if (dr[18] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[18].ToString();
                                if (dr[19] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[19].ToString();
                                if (dr[20] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[20]);
                                if (dr[21] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[21]);
                                if (dr[22] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[22]);
                                if (dr[23] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[23].ToString();
                                if (dr[24] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[24].ToString();
                                if (dr[25] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[25].ToString();
                                break;
                            case 14:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.numTalla4 = Convert.ToInt16(dr[5]);
                                else
                                    objDetalle.numTalla4 = Convert.ToInt16(0);
                                if (dr[6] != DBNull.Value)
                                    objDetalle.numTalla5 = Convert.ToInt16(dr[6]);
                                else
                                    objDetalle.numTalla5 = Convert.ToInt16(0);
                                if (dr[7] != DBNull.Value)
                                    objDetalle.numTalla6 = Convert.ToInt16(dr[7]);
                                else
                                    objDetalle.numTalla6 = Convert.ToInt16(0);
                                if (dr[8] != DBNull.Value)
                                    objDetalle.numTalla7 = Convert.ToInt16(dr[8]);
                                else
                                    objDetalle.numTalla7 = Convert.ToInt16(0);
                                if (dr[9] != DBNull.Value)
                                    objDetalle.numTalla8 = Convert.ToInt16(dr[9]);
                                else
                                    objDetalle.numTalla8 = Convert.ToInt16(0);
                                if (dr[10] != DBNull.Value)
                                    objDetalle.numTalla9 = Convert.ToInt16(dr[10]);
                                else
                                    objDetalle.numTalla9 = Convert.ToInt16(0);
                                if (dr[11] != DBNull.Value)
                                    objDetalle.numTalla10 = Convert.ToInt16(dr[11]);
                                else
                                    objDetalle.numTalla10 = Convert.ToInt16(0);
                                if (dr[12] != DBNull.Value)
                                    objDetalle.numTalla11 = Convert.ToInt16(dr[12]);
                                else
                                    objDetalle.numTalla11 = Convert.ToInt16(0);
                                if (dr[13] != DBNull.Value)
                                    objDetalle.numTalla12 = Convert.ToInt16(dr[13]);
                                else
                                    objDetalle.numTalla12 = Convert.ToInt16(0);
                                if (dr[14] != DBNull.Value)
                                    objDetalle.numTalla13 = Convert.ToInt16(dr[14]);
                                else
                                    objDetalle.numTalla13 = Convert.ToInt16(0);
                                if (dr[15] != DBNull.Value)
                                    objDetalle.numTalla14 = Convert.ToInt16(dr[15]);
                                else
                                    objDetalle.numTalla14 = Convert.ToInt16(0);
                                objDetalle.numTalla15 = 0;
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[18] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[18].ToString();
                                if (dr[19] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[19].ToString();
                                if (dr[20] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[20].ToString();
                                if (dr[21] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[21]);
                                if (dr[22] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[22]);
                                if (dr[23] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[23]);
                                if (dr[24] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[24].ToString();
                                if (dr[25] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[25].ToString();
                                if (dr[26] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[26].ToString();
                                break;
                            case 15:
                                if (dr[2] != DBNull.Value)
                                    objDetalle.numTalla1 = Convert.ToInt16(dr[2]);
                                else
                                    objDetalle.numTalla1 = Convert.ToInt16(0);
                                if (dr[3] != DBNull.Value)
                                    objDetalle.numTalla2 = Convert.ToInt16(dr[3]);
                                else
                                    objDetalle.numTalla2 = Convert.ToInt16(0);
                                if (dr[4] != DBNull.Value)
                                    objDetalle.numTalla3 = Convert.ToInt16(dr[4]);
                                else
                                    objDetalle.numTalla3 = Convert.ToInt16(0);
                                if (dr[5] != DBNull.Value)
                                    objDetalle.numTalla4 = Convert.ToInt16(dr[5]);
                                else
                                    objDetalle.numTalla4 = Convert.ToInt16(0);
                                if (dr[6] != DBNull.Value)
                                    objDetalle.numTalla5 = Convert.ToInt16(dr[6]);
                                else
                                    objDetalle.numTalla5 = Convert.ToInt16(0);
                                if (dr[7] != DBNull.Value)
                                    objDetalle.numTalla6 = Convert.ToInt16(dr[7]);
                                else
                                    objDetalle.numTalla6 = Convert.ToInt16(0);
                                if (dr[8] != DBNull.Value)
                                    objDetalle.numTalla7 = Convert.ToInt16(dr[8]);
                                else
                                    objDetalle.numTalla7 = Convert.ToInt16(0);
                                if (dr[9] != DBNull.Value)
                                    objDetalle.numTalla8 = Convert.ToInt16(dr[9]);
                                else
                                    objDetalle.numTalla8 = Convert.ToInt16(0);
                                if (dr[10] != DBNull.Value)
                                    objDetalle.numTalla9 = Convert.ToInt16(dr[10]);
                                else
                                    objDetalle.numTalla9 = Convert.ToInt16(0);
                                if (dr[11] != DBNull.Value)
                                    objDetalle.numTalla10 = Convert.ToInt16(dr[11]);
                                else
                                    objDetalle.numTalla10 = Convert.ToInt16(0);
                                if (dr[12] != DBNull.Value)
                                    objDetalle.numTalla11 = Convert.ToInt16(dr[12]);
                                else
                                    objDetalle.numTalla11 = Convert.ToInt16(0);
                                if (dr[13] != DBNull.Value)
                                    objDetalle.numTalla12 = Convert.ToInt16(dr[13]);
                                else
                                    objDetalle.numTalla12 = Convert.ToInt16(0);
                                if (dr[14] != DBNull.Value)
                                    objDetalle.numTalla13 = Convert.ToInt16(dr[14]);
                                else
                                    objDetalle.numTalla13 = Convert.ToInt16(0);
                                if (dr[15] != DBNull.Value)
                                    objDetalle.numTalla14 = Convert.ToInt16(dr[15]);
                                else
                                    objDetalle.numTalla14 = Convert.ToInt16(0);
                                if (dr[16] != DBNull.Value)
                                    objDetalle.numTalla15 = Convert.ToInt16(dr[16]);
                                else
                                    objDetalle.numTalla15 = Convert.ToInt16(0);
                                objDetalle.Total = Convert.ToInt16(dr["Total"]);
                                objDetalle.Asignada = Convert.ToBoolean(dr["Asignada"]);
                                if (dr[19] != DBNull.Value)
                                    objDetalle.CodCortador1 = dr[19].ToString();
                                if (dr[20] != DBNull.Value)
                                    objDetalle.CodCortador2 = dr[20].ToString();
                                if (dr[21] != DBNull.Value)
                                    objDetalle.CodCortador3 = dr[21].ToString();
                                if (dr[22] != DBNull.Value)
                                    objDetalle.PorCortador1 = Convert.ToInt16(dr[22]);
                                if (dr[23] != DBNull.Value)
                                    objDetalle.PorCortador2 = Convert.ToInt16(dr[23]);
                                if (dr[24] != DBNull.Value)
                                    objDetalle.PorCortador3 = Convert.ToInt16(dr[24]);
                                if (dr[25] != DBNull.Value)
                                    objDetalle.Cortador1 = dr[25].ToString();
                                if (dr[26] != DBNull.Value)
                                    objDetalle.Cortador2 = dr[26].ToString();
                                if (dr[27] != DBNull.Value)
                                    objDetalle.Cortador3 = dr[27].ToString();
                                break;
                            default:
                                break;
                        }

                        lstDetalle.Add(objDetalle);
                    }
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            public class Detalle : ObservableObject
            {
                private string _Orden;
                public string Orden
                {
                    get { return _Orden; }
                    set { _Orden = value; RaisePropertyChangedEvent("Orden"); }
                }

                private bool _Ok;
                public bool Ok
                {
                    get { return _Ok; }
                    set { _Ok = value; RaisePropertyChangedEvent("Ok"); }
                }

                private Int16 _numTalla1;
                public Int16 numTalla1
                {
                    get { return _numTalla1; }
                    set 
                    {
                        Total = (Total - _numTalla1 + value);
                        _numTalla1 = value; RaisePropertyChangedEvent("numTalla1"); 
                    }
                }

                private Int16 _numTalla2;
                public Int16 numTalla2
                {
                    get { return _numTalla2; }
                    set 
                    {
                        Total = (Total - _numTalla2 + value);
                        _numTalla2 = value; RaisePropertyChangedEvent("numTalla2"); 
                    }
                }

                private Int16 _numTalla3;
                public Int16 numTalla3
                {
                    get { return _numTalla3; }
                    set 
                    {
                        Total = (Total - _numTalla3 + value);    
                       _numTalla3 = value; RaisePropertyChangedEvent("numTalla3"); 
                    }
                }

                private Int16 _numTalla4;
                public Int16 numTalla4
                {
                    get { return _numTalla4; }
                    set 
                    {
                        Total = (Total - _numTalla4 + value);
                        _numTalla4 = value; RaisePropertyChangedEvent("numTalla4"); 
                    }
                }

                private Int16 _numTalla5;
                public Int16 numTalla5
                {
                    get { return _numTalla5; }
                    set 
                    {
                        Total = (Total - _numTalla5 + value);
                        _numTalla5 = value; RaisePropertyChangedEvent("numTalla5"); 
                    }
                }

                private Int16 _numTalla6;
                public Int16 numTalla6
                {
                    get { return _numTalla6; }
                    set 
                    {
                        Total = (Total - _numTalla6 + value);
                        _numTalla6 = value; RaisePropertyChangedEvent("numTalla6"); 
                    }
                }

                private Int16 _numTalla7;
                public Int16 numTalla7
                {
                    get { return _numTalla7; }
                    set 
                    {
                        Total = (Total - _numTalla7 + value);
                        _numTalla7 = value; RaisePropertyChangedEvent("numTalla7"); 
                    }
                }

                private Int16 _numTalla8;
                public Int16 numTalla8
                {
                    get { return _numTalla8; }
                    set 
                    {
                        Total = (Total - _numTalla8 + value);
                        _numTalla8 = value; RaisePropertyChangedEvent("numTalla8"); 
                    }
                }

                private Int16 _numTalla9;
                public Int16 numTalla9
                {
                    get { return _numTalla9; }
                    set
                    {
                        Total = (Total - _numTalla9 + value);
                        _numTalla9 = value; RaisePropertyChangedEvent("numTalla9");
                    }
                }

                private Int16 _numTalla10;
                public Int16 numTalla10
                {
                    get { return _numTalla10; }
                    set
                    {
                        Total = (Total - _numTalla10 + value);
                        _numTalla10 = value; RaisePropertyChangedEvent("numTalla10");
                    }
                }

                private Int16 _numTalla11;
                public Int16 numTalla11
                {
                    get { return _numTalla11; }
                    set
                    {
                        Total = (Total - _numTalla11 + value);
                        _numTalla11 = value; RaisePropertyChangedEvent("numTalla11");
                    }
                }

                private Int16 _numTalla12;
                public Int16 numTalla12
                {
                    get { return _numTalla12; }
                    set
                    {
                        Total = (Total - _numTalla12 + value);
                        _numTalla12 = value; RaisePropertyChangedEvent("numTalla12");
                    }
                }

                private Int16 _numTalla13;
                public Int16 numTalla13
                {
                    get { return _numTalla13; }
                    set
                    {
                        Total = (Total - _numTalla13 + value);
                        _numTalla13 = value; RaisePropertyChangedEvent("numTalla13");
                    }
                }

                private Int16 _numTalla14;
                public Int16 numTalla14
                {
                    get { return _numTalla14; }
                    set
                    {
                        Total = (Total - _numTalla14 + value);
                        _numTalla14 = value; RaisePropertyChangedEvent("numTalla14");
                    }
                }

                private Int16 _numTalla15;
                public Int16 numTalla15
                {
                    get { return _numTalla15; }
                    set
                    {
                        Total = (Total - _numTalla15 + value);
                        _numTalla15 = value; RaisePropertyChangedEvent("numTalla15");
                    }
                }

                private Int32 _Total;
                public Int32 Total
                {
                    get { return _Total; }
                    set { _Total = value; RaisePropertyChangedEvent("Total"); }
                }

                private bool _Asignada;
                public bool Asignada
                {
                    get { return _Asignada; }
                    set { _Asignada = value; RaisePropertyChangedEvent("Asignada"); }
                }

                private string _CodCortador1;
                public string CodCortador1
                {
                    get { return _CodCortador1; }
                    set { _CodCortador1 = value; RaisePropertyChangedEvent("CodCortador1"); }
                }

                private string _CodCortador2;
                public string CodCortador2
                {
                    get { return _CodCortador2; }
                    set { _CodCortador2 = value; RaisePropertyChangedEvent("CodCortador2"); }
                }

                private string _CodCortador3;
                public string CodCortador3
                {
                    get { return _CodCortador3; }
                    set { _CodCortador3 = value; RaisePropertyChangedEvent("CodCortador3"); }
                }

                private double _PorCortador1;
                public double PorCortador1
                {
                    get { return _PorCortador1; }
                    set { _PorCortador1 = value; RaisePropertyChangedEvent("PorCortador1"); }
                }

                private double _PorCortador2;
                public double PorCortador2
                {
                    get { return _PorCortador2; }
                    set { _PorCortador2 = value; RaisePropertyChangedEvent("PorCortador2"); }
                }

                private double _PorCortador3;
                public double PorCortador3
                {
                    get { return _PorCortador3; }
                    set { _PorCortador3 = value; RaisePropertyChangedEvent("PorCortador3"); }
                }

                private string _Cortador1;
                public string Cortador1
                {
                    get { return _Cortador1; }
                    set { _Cortador1 = value; RaisePropertyChangedEvent("Cortador1"); }
                }

                private string _Cortador2;
                public string Cortador2
                {
                    get { return _Cortador2; }
                    set { _Cortador2 = value; RaisePropertyChangedEvent("Cortador2"); }
                }

                private string _Cortador3;
                public string Cortador3
                {
                    get { return _Cortador3; }
                    set { _Cortador3 = value; RaisePropertyChangedEvent("Cortador3"); }
                }
            }
       
        #endregion

    }

}
